package com.cysoft.third.echarts.component.textStyle;

/**
 * @author 玖零
 * @version v0.0.1
 * @project cysoft-third-echarts
 * @package com.cysoft.third.echarts.component.textStyle
 * @date 2025/3/12 16:04
 * @desc 全局的字体样式。
 */
public class TextStyle {
    /**
     * 文字的颜色。
     */
    private String color = "#fff";

    /**
     * 文字字体的风格。
     * 可选值: 'normal', 'italic', 'oblique'
     */
    private String fontStyle = "normal";

    /**
     * 文字字体的粗细。
     * 可选值: 'normal', 'bold', 'bolder', 'lighter', 100 | 200 | 300 | 400...
     */
    private Object fontWeight = "normal";

    /**
     * 文字的字体系列。
     * 还可以是 'serif' , 'monospace', 'Arial', 'Courier New', 'Microsoft YaHei', ...
     */
    private String fontFamily = "sans-serif";

    /**
     * 文字的字体大小。
     */
    private Integer fontSize = 12;

    /**
     * 行高。
     * rich 中如果没有设置 lineHeight，则会取父层级的 lineHeight。
     */
    private Integer lineHeight;

    /**
     * 文本显示宽度。
     */
    private Integer width;

    /**
     * 文本显示高度。
     */
    private Integer height;

    /**
     * 文字本身的描边颜色。
     */
    private String textBorderColor;

    /**
     * 文字本身的描边宽度。
     */
    private Integer textBorderWidth;

    /**
     * 文字本身的描边类型。
     * 可选值: 'solid', 'dashed', 'dotted'
     * 自 v5.0.0 开始，也可以是 number 或者 number 数组，用以指定线条的 dash array，配合 textBorderDashOffset 可实现更灵活的虚线效果。
     */
    private Object textBorderType = "solid";

    /**
     * 从 v5.0.0 开始支持
     * 用于设置虚线的偏移量，可搭配 textBorderType 指定 dash array 实现灵活的虚线效果。
     * 更多详情可以参考 MDN lineDashOffset。
     */
    private Integer textBorderDashOffset = 0;

    /**
     * 文字本身的阴影颜色。
     */
    private String textShadowColor = "transparent";

    /**
     * 文字本身的阴影长度。
     */
    private Integer textShadowBlur = 0;

    /**
     * 文字本身的阴影 X 偏移。
     */
    private Integer textShadowOffsetX = 0;

    /**
     * 文字本身的阴影 Y 偏移。
     */
    private Integer textShadowOffsetY = 0;

    /**
     * 文字超出宽度是否截断或者换行。配置width时有效
     * 'truncate' 截断，并在末尾显示ellipsis配置的文本，默认为...
     * 'break' 换行
     * 'breakAll' 换行，跟'break'不同的是，在英语等拉丁文中，'breakAll'还会强制单词内换行
     */
    private String overflow = "none";

    /**
     * 在overflow配置为'truncate'的时候，可以通过该属性配置末尾显示的文本。
     */
    private String ellipsis = "...";

    /**
     * rich 相关属性
     */
    private Object rich;
}
